#ifndef NODOGRAFO_H_
#define NODOGRAFO_H_
#include <vector>
#include <iostream>

class AristaGrafo;
class NodoGrafo {
public:
	NodoGrafo(unsigned numeroDeVertice);
	virtual ~NodoGrafo();

	std::vector<AristaGrafo*> *getAdyacencias();
	NodoGrafo* getNodoParaAdyacencia(unsigned numeroDeAdyacencia);

	void agregarAdyacencia(NodoGrafo* nodoAdyacente, unsigned etiqueta, bool esDirecta);
    unsigned getNumeroDeVertice() const;

    bool getFueVisitado() const;
    void setFueVisitado(bool fueRecorrido);

    bool adyacenciaVisitada(unsigned numeroAdyacencia);
    bool adyacenciaEtiquetada(unsigned numeroAdyacencia);

    unsigned getEtiqueta() const;
    void setEtiqueta(unsigned  etiqueta);

    bool setEtiquetaParaAdyacencia(unsigned numeroDeAdyacencia, unsigned mod);


    bool getRelacionEsDirecta(unsigned numeroDeAdyacencia);
    bool getFueEtiquetado();
    void setFueEtiquetado(bool fueEtiquetado);

private:
    std::vector <AristaGrafo*> *adyacencias;
    unsigned numeroDeVertice;
    unsigned etiqueta;
    bool fueVisitado;
	bool fueEtiquetado;
};

#endif /* NODOGRAFO_H_ */
